Processors typically comprise one or more circular buffers for storing data. For example, out-of-order processors can provide improved performance by executing instructions in a sequence that is different from the order in the program, so that instructions are executed when their input data is available rather than waiting for the preceding instruction in the program to execute. Such out-of-order processors typically have a re-order buffer (ROB) to enable the instructions to be executed out of order, but committed in-order. ROBs are typically formed as circular buffers with a fixed size.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known buffers.